﻿// Chinese_program.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。

#pragma once

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <winsock.h>
#include <graphics.h>
#include <vector>
#include <float.h>
#include <dir.h>
#include <process.h>
#include <assert.h>
#include <dos.h>
#include <bios.h>
#include <sys/stat.h>
#include <mem.h>
#include <memory.h>
#include <malloc.h>
#include <bits\stdc++.h>

using namespace std;

// TODO: 在此处引用程序需要的其他标头。

#ifndef ch_p
#define ch_p

//function

#define 打印_C printf
#define 输入_C scanf
#define 打开文件1 fopen
#define 关闭文件 fclose
#define 打开文件2 freopen
#define 释放内存 free
#define 睡眠 Sleep
#define 反余弦 acos
#define 反正弦 asin
#define 反正切 atan
#define 求余 fmod
#define 以10为基数的自然对数 log10
#define 分解为整数部分和小数部分 modf
#define 将浮点数转换成字符串 fcvt
#define 双曲余弦 cosh
#define 双曲正弦 sinh
#define 正弦 sin
#define 余弦 cos
#define 返回e↑x exp
#define 自然对数 log
#define 返回x↑y pow
#define 开根 sqrt
#define 绝对值_整型 abs
#define 绝对值_浮点 fabs
#define 上取整 ceil
#define 下取整 floor
#define 立方根 cbrt
#define 求三角形斜边 hypot
#define 最小值 min
#define 最大值 max
#define 字符串转换成整型 atoi
#define 交换 swap
#define 终止程序 exit
#define 字符输入 getchar
#define 字符输出 putchar
#define 字符串输入 gets
#define 字符串输出 puts
#define 是否为字母 isalpha
#define 是否为小写 islower
#define 是否为大写 isupper
#define 转换为小写 tolower
#define 转换成大写 toupper
#define 是否为数字 isdigit
#define 是否为数字或字母 isalnum
#define 提取字符 substr
#define 加入字符串 append
#define 插入字符串 insert
#define 输出第一次出现的位置 find
#define 复制字符 copy
#define 复制字符串 strcpy
#define 指定长度复制字符串 strncpy
#define 内存初始化 memset
#define 排序 sort
#define 读取一行 fgets
#define 读取一个字符 fgetc
#define 写入一个字符串 fputs
#define 写入数据 fprintf
#define 读取数据 fscanf
#define 写入数据块 fwrite
#define 设置文件指针位置 fseek
#define 获取文件首地址的偏移字节数 ftell
#define 分配内存 malloc
#define 修改内存 realloc
#define 初始化套接字 WSAStartup
#define 创建套接字 socket
#define 绑定套接字 bind
#define 监听套接字 listen
#define 接受客户端的连接 accept
#define 关闭套接字 closesocket
#define 发送连接请求 connect
#define 转换为网络排列方式_16位 htons
#define 转换为网络排列方式 htonl
#define 将一个点分十进制的IP转换成一个无符号长整型数 inet_addr
#define 接收数据 recv
#define 发送数据 send
#define 接受数据并保存原地址 recvfrom
#define 向特定方向发送数据 sendto
#define 初始化动态链接库分配的资源 WSACleanup
#define 播放声音 mciSendStringA
#define 存储器拷贝 memcpy
#define 插入字符串 strcat
#define 比较字符串大小 strcmp
#define 获取字符串长度 strlen
#define 插入指定长度字符串 strncat
#define 比较指定长度字符串大小 strncmp
#define 判断后者是否是前者的子串 strstr
#define 终止程序执行 abort
#define 将字符串转换成整数 atoi
#define 将字符串转换成长整数 atol
#define 产生一个随机整数 rand
#define 初始化随机数产生器 srand
#define 将字符串作为一个可执行文件并加以执行 system
#define 判断是否为字符 isascii
#define 判断是否为作废字符 iscntrl
#define 判断是否为可打印字符_无空格 isgraph
#define 判断是否为可打印字符_含空格 isprint
#define 判断是否为标点 ispunct
#define 判断是否为16进制数 isxdigit
#define 把一个浮点数分解为尾数和指数 frexp
#define 计算_X乘以2的_Y次幂 ldexp
#define 双曲正切 tanh
#define 从参数产生一个多项式 poly
#define 将浮点数value转换成字符串并返回该字符串 ecvt
#define 将数value转换成字符串并存于buf中,并返回buf的指针 gcvt
#define 将无符号整型数value转换成字符串并返回该字符串 ultoa
#define 将长整型数value转换成字符串并返回该字符串 ltoa
#define 将整数value转换成字符串存入string itoa
#define 将字符串str转换成双精度数 strtod
#define 将字符串str转换成长整型数 strtol
#define 用户修改数学错误返回信息函数 matherr
#define 清除浮点状态字并返回原来的浮点状态 _clear87
#define 重新初使化浮点数学程序包 _fpreset
#define 返回浮点状态字 _status87
#define 使指定的目录变成当前的工作目录 chdir
#define 查找指定的文件 findfirst
#define 装入和运行其它程序1 execl
#define 装入和运行其它程序2 execle
#define 装入和运行其它程序3 execlp
#define 装入和运行其它程序4 execlpe
#define 装入和运行其它程序5 execv
#define 装入和运行其它程序6 execve
#define 装入和运行其它程序7 execvp
#define 装入和运行其它程序8 execvpe
#define 终止当前程序但不清理现场 _exit
#define 运行子程序1 spawnl
#define 运行子程序2 spawnle
#define 运行子程序3 spawnlp
#define 运行子程序4 spawnlpe
#define 运行子程序5 spawnv
#define 运行子程序6 spawnve
#define 运行子程序7 spawnvp
#define 运行子程序8 spawnvpe
#define 返回ch相应的小写字母 _tolower
#define 返回ch相应的大写字母 _toupper
#define 显示最近一次的错误信息 perror
#define 返回最近一次的错误信息 strerror
#define 返回最近所敲的按键 kbhit
#define 从控制台读一个字符显示在屏幕上 fgetchar
#define 从控制台读一个字符不显示在屏幕上 getch
#define 向控制台写一个字符 putch
#define 把字符c退回给控制台 ungetch
#define 从控制台读入字符串存于string中 cgets
#define 使用BIOS进行输出参数从Valist_param中取得 vscanf
#define 直接对控制台作操作输入 cscanf
#define 通过字符串string分别对各个参数进行赋值 sscanf
#define 分别对各个参数进行赋值参数从Vlist_param中取得 vsscanf
#define 直接对控制台作操作输出1 cputs
#define 使用BIOS进行输出参数从Valist_param中取得 vprintf
#define 直接对控制台作操作输出2 cprintf
#define 直接对控制台作操作输出参数从Valist_param中取得 vcprintf
#define 将字符串string的内容重新写为格式化后的字符串 sprintf
#define 将字符串string的内容重新写为格式化后的字符串参数从Valist_param中取得 vsprintf
#define 将文件oldname的名称改为newname rename
#define 用来控制输入_输出设备 ioctl
#define 执行软件信号1 ssignal
#define 执行软件信号2 gsignal
#define 为读或写打开一个文件按后按access来确定是读文件还是写文件 _open
#define 删除文件 unlink
#define 取远指针farptr的偏移量 FP_OFF
#define 设置远指针farptr的段值 FP_SEG
#define 根据段seg和偏移量off构造一个far指针 MK_FP
#define 取程序段前缀的段地址 getpsp
#define 分析一个字符串 parsfnm
#define 读特定的磁盘扇区 absread
#define 写特定的磁盘扇区 abswrite
#define 取磁盘的自由空间 getdfree
#define 取磁盘转换地址DTA getdta
#define 设置磁盘转换地址DTA setdta
#define 返回指定驱动器的文件分配表信息并存入结构fatblkp中 getfat
#define 对MSDOS系统进行调用1 bdos
#define 对MSDOS系统进行调用2 bdosptr
#define 执行intr_num号中断 int86
#define 执行intr_num号中断 int86x
#define 执行DOS中断0x21来调用一个指定的DOS函数 intdos
#define 执行DOS中断0x21来调用一个指定的DOS函数 intdosx
#define 产生一个由参数intr_num指定的8086软件中断 intr
#define 以status状态返回MSDOS但程序仍保留于内存中 keep
#define 设置中断后的对中断的处理 ctrlbrk
#define 禁止发生中断 disable
#define 允许发生中断 enable
#define 执行由intr_num所指定的软件中断 geninterrupt
#define 返回中断号为intr_num的中断处理程序 interrupt
#define 设置中断号为intr_num的中 setvect
#define 定义一个硬件错误处理程序 harderr
#define 硬件错误处理1 hardresume
#define 硬件错误处理2 hardretn
#define 从指定的输入端口读入一个字并返回 inport
#define 操作存贮数组1 memccpy
#define 操作存贮数组2 memchr
#define 操作存贮数组3 memcmp
#define 操作存贮数组4 memicmp
#define 操作存贮数组5 memmove
#define 操作存贮数组6 memcpy
#define 操作存贮数组7 memset
#define 复制字节 movedata
#define 复制一块长len字节的数据到destin movemem
#define 把addr所指的块的第一个字节置于字节value中 setmem
#define 检索并返回字符c在字符串s中第一次出现的位置 strchr
#define 返回重复字符个数 strcspn
#define 复制字符串到最近建立的单元 strdup
#define 利用DOS分配空闲的内存 allocmem
#define 释放先前由allocmem分配的内存 freemem
#define 修改所分配的内存长度 setblock
#define 改变分配给调用程序的数据段的空间数量 brk
#define 增加分配给调用程序的数据段的空间数量 sbrk
#define 返回未用的存储区的长度 coreleft
#define 分配nelem个长度为elsize的内存空间并返回所分配内存的指针 calloc
#define 返回远堆中未用的存储区的长度 farcoreleft
#define 计算时间差 difftime
#define 转换成格林威治时间 gmtime
#define 转换成当地标准时间 localtime
#define 提供了对UNIX操作系统的兼容性 tzset
#define 转换成UNIX格式并返回自格林威治时间1970年1月1日凌晨起到现在的秒数 dostounix
#define 将计算机内的时间改为由结构timep所指的时间 settime
#define 将计算机内的时间写入结构timep中 gettime
#define 给出自格林威治时间1970年1月1日凌晨至现在所经过的秒数并将该值存于tloc所指的单元中 time
#define 本函数将tp所指的时间 stime
#define 本函数将计算机内的日期改成由结构dateblk所指定的日期 setdate
#define 本函数将计算机内的日期写入结构dateblk中以供用户使用 getdate
#define 将自格林威治时间1970年1月1日凌晨起到现在的秒数utime转换成DOS格式并保存 unixtodos
#define 在指定坐标画出指定颜色的点 putpixel
#define 获取指定坐标点的颜色 getpixel
#define 返回屏幕宽度 getmaxx
#define 返回屏幕高度 getmaxy
#define 返回当前游标的位置 (getx(), gety())
#define 移动游标到指定坐标 moveto
#define 增加游标的x，y值 moverel
#define 在指定点之间画一条直线 line
#define 从当前位置画一条直线到指定坐标 lineto
#define 从当前位置开始按指定的水平和垂直偏移距离画一条直线 linerel
#define 绘制一个由左上角坐标和右下角坐标定义的矩形 rectangle
#define 设置绘图模式 setwritemode
#define 设置线型 setlinestyle
#define 获取线型设置 getlinesettings
#define 画条 bar
#define 画条块 bar3d
#define 画多边形 drawpoly
#define 获取纵横比 getaspectratio
#define 画圆 circle
#define 画圆弧 arc
#define 画椭圆弧 ellipse
#define 画椭圆区 fillellipse
#define 画扇区 pieslice
#define 画椭圆扇区 sector
#define 获取圆弧坐标 getarccoords
#define 设置填充图样和颜色 setfillstyle
#define 设置用户图样 setfillpattern
#define 填充闭域 floodfill
#define 填充多边形 fillpoly
#define 获取填充设置 getfillsettings
#define 获取用户图样设置 getfillpattern
#define 图像存储大小 imagesize
#define 保存图像 getimage
#define 输出图像 putimage
#define 指示是否有鼠标消息 MouseHit
#define 获取鼠标消息 GetMouseMsg
#define 获取鼠标消息并立即返回 PeekMouseMsg
#define 清空鼠标消息缓冲区 FlushMouseMsgBuffer
#define 在当前位置输出字符串 outtext
#define 设置当前文本样式 setfont
#define 获取当前文本样式 getfont
#define 创建窗口 initgraph
#define 关闭窗口 closegraph
#define 清除设备 cleardevice 
#define 设置剪辑区域 setcliprgn
#define 清除剪辑区域 clearcliprgn
#define 设置坐标原点 setorigin

//basic

#define 删除 delete
#define 新的 new
#define 自动 auto
#define 静态 static
#define 动态 register
#define 真 true
#define 假 false
#define 布朗 bool
#define 基本整型 int
#define 短整型 short
#define 长整型 long
#define 无符号 unsigned
#define 有符号 signed
#define 无类型 void
#define 字符型_C char
#define 公开 public
#define 个人 private
#define 单精度浮点 float
#define 双精度浮点 double
#define 长度 sizeof
#define 外部 extern
#define 变量 volatile
#define 使用 using
#define 命名空间 namespace
#define 结构体 struct
#define 类型定义 typedef
#define 数 value
#define 引入 import
#define 枚举 enum
#define 共用体 union
#define 类 class
#define 接口 __interface
#define 虚拟型 virtual
#define 和 and
#define 或 or
#define 空 NULL
#define 空白 nullptr
#define 内联 inline
#define 友元 friend
#define 失败 [[fallthrough]]
#define 无争议 [[nodiscard]]
#define 可能未使用 [[maybe_unused]]

#define 如果 if
#define 否则 else
#define 判断循环 while
#define 自增（自减）循环 for
#define 检测 switch
#define 可能 case
#define 退出 break
#define 继续 continue
#define 返回 return
#define 跳转 goto

//typedef(struct)(class)

#define 文件类型 FILE
#define 处理类型 HANDLE
#define 双字节值类型 DWORD
#define 坐标类型 COORD
#define 字节类型 BYTE
#define 字类型 WORD
#define 套接字类型 SOCKET
#define 图像类型 IMAGE
#define 矢量类型 vector
#define 时间类型 tm
#define 字符类型 ABC
#define 具有_alloca类型尝试的临时存储类型 _Optimistic_temporary_buffer
#define 旧消息结构 EASYXMSG
#define 旧鼠标相关功能 MOUSEMSG
#define 填充样式类 FILLSTYLE
#define 线型类 LINESTYLE
#endif /* !ch_p */